<?php
class AcceuilController extends Controller {
	
	function index(){
		
	}
	
	public function inscription(){
		$this->set('title',NOM_SITE.' - INSCRIPTION');	
		if(isset($_POST['compte_restaurant'])){
			$erreurs_resto = $this->inscrireRestaurateur();
			$this->set('erreurs_resto',$erreurs_resto);
		} else if(isset($_POST['compte_hotel'])){
			$erreurs_hotel = $this->inscrireHotelier();
			$this->set('erreurs_hotel',$erreurs_hotel);	
		}

	}

	function connexion(){
		if(isset($_POST['connexion'])){
			$email = $_POST['email'];
			$password = sha1($_POST['password']);
			//on charge le modele
			$model = $this->loadModel('utilisateurManager');
			$reponse = $model->connexion($email,$password);
			
			if(empty($reponse)){
				$this->set('erreurs','Impossible de vous connecter : mot de passe ou adresse email invalide.');	
			} else {
				//on charge certaines donnes dans la session
				$_SESSION['id_utilisateur'] = $reponse['id_utilisateur'];
				$_SESSION['type_utilisateur'] = $reponse['type_utilisateur'];
				$_SESSION['email'] = $email;
				$_SESSION['password'] = $password;
				$_SESSION['nom_utilisateur'] = $reponse['nom_utilisateur'];
				$_SESSION['prenom_utilisateur'] = $reponse['prenom_utilisateur'];
				//on redirige vers la page adequate			
				if($_SESSION['type_utilisateur']=="Particulier"){
					$this->redirect(SITE."particulier");
				} else if($_SESSION['type_utilisateur']=="Restaurant"){
					$this->redirect(SITE."restaurant");
				} else if($_SESSION['type_utilisateur']=="Hotel"){
					$this->redirect(SITE."hotel");
				} else if($_SESSION['type_utilisateur']=="Fournisseur"){
					$this->redirect(SITE.'fournisseur');	
				} 
			}
			
		} else {
			$this->renderErreur404();	
		}
	}
	
	public function getDernierNews(){
		if($this->request->action==__FUNCTION__){
			$this->renderErreur404();	
		} else {
			$model = $this->loadModel('appelOffreManager');
			return $model->getNewsAppelOffre();	
		}
	}

    public function getNews(){
        if($this->request->action==__FUNCTION__){
            $this->renderErreur404();
        } else {
            $model = $this->loadModel('appelOffreManager');
            return $model->getNews();
        }
    }
	
	public function getListeImages(){
		if($this->request->action==__FUNCTION__){
			$this->renderErreur404();	
		} else {
			$model = $this->loadModel('ServiceManager');
			return $model->getListeImages();
		}
	}
	
	public function getListeFormeJuri(){
		$model = $this->loadModel('AdminManager');
		return $model->getListeFormeJuri();
	}
	
	public function inscrireParticulier(){
		if(isset($_POST['compte_particulier']) && $this->request->action!=__FUNCTION__){
		 $model = $this->loadModel('utilisateurManager');
		 $nom = isset($_POST['nom']) ? $_POST['nom'] : '';
		 $prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';
		 $type = PARTICULIER;
		 $email = isset($_POST['email']) ? $_POST['email'] : '';
		 $pass = isset($_POST['password']) ? $_POST['password'] : '';
		 $user = new Utilisateur(null,$nom,$prenom,$email,$pass,$type);
		 $adresse = isset($_POST['adresse']) ? $_POST['adresse'] : '';
		 $telephone = isset($_POST['telephone']) ? $_POST['telephone'] : '';
		 $fonction = isset($_POST['fonction']) ? $_POST['fonction'] : '';
		 $ville = isset($_POST['ville']) ? $_POST['ville'] : '';
		 $pays = isset($_POST['pays']) ? $_POST['pays'] : '';
		 $code_postal = isset($_POST['code_postal']) ? $_POST['code_postal'] : '';
		 $addr = new Adresse(null,$code_postal,$ville,$pays,$adresse,null);
		 $particulier = new Particulier($_POST);
		 
		 $reponse = $model->inscrireParticulier($user,$addr,$particulier);
		 if(empty($reponse)){
				$_SESSION['inscris'] = true;
				$this->redirect(SITE);
				die();
				
		 } else {
			 return $reponse ;
		 }
		 
	 } else {
		$this->renderErreur404(); 
	 }
	}


    public function inscrireRestaurateur(){
        if(isset($_POST['compte_restaurant']) && $this->request->action!=__FUNCTION__){

            $resto = new Restaurant($_POST);

            $nom = isset($_POST['nom_referent_resto']) ? $_POST['nom_referent_resto'] : '';
            $prenom = isset($_POST['prenom_referent_resto']) ? $_POST['prenom_referent_resto'] : '';
            $type = RESTO;
            $email = isset($_POST['email_resto']) ? $_POST['email_resto'] : '';
            $pass = isset($_POST['password_resto']) ? $_POST['password_resto'] : '';
            $user = new Utilisateur(null,$nom,$prenom,$email,$pass,$type);
            $pass_conf = isset($_POST['conf_password_resto']) ? $_POST['conf_password_resto'] : '';
            //on charge le model
            $model = $this->loadModel('utilisateurManager');
            $model_service = $this->loadModel('ServiceManager');
            //
            $adresse = isset($_POST['adresse_resto']) ? $_POST['adresse_resto'] : '';
            $ville = isset($_POST['ville_resto']) ? $_POST['ville_resto'] :'';
            $pays = isset($_POST['pays_resto']) ? $_POST['pays_resto'] : '';
            $code_postal = @$_POST['code_postal_resto'];
            $addr = new Adresse(null,$code_postal,$ville,$pays,$adresse,null);
            if($pass!=$pass_conf){
                $reponse['motdepasse'] = true;
                return $reponse;
            }
            $reponse = $model->inscrireRestaurateur($user,$resto,$addr);
            if(empty($reponse)){
                $_SESSION['inscris'] = true;
                $model_service->addOptionRestaurant($model_service->getId($user->getEmail()));
                $this->redirect(SITE);

            } else {
                return $reponse;
            }

        } else {
            $this->renderErreur404();
        }
    }

    public function inscrireTraiteur(){
        if(isset($_POST['compte_traiteur']) && $this->request->action!=__FUNCTION__){

            $traiteur = new Traiteur($_POST);

            $nom = isset($_POST['nom_referent_traiteur']) ? $_POST['nom_referent_traiteur'] : '';
            $prenom = isset($_POST['prenom_referent_traiteur']) ? $_POST['prenom_referent_traiteur'] : '';
            $type = TRAITEUR;
            $email = isset($_POST['email_traiteur']) ? $_POST['email_traiteur'] : '';
            $pass = isset($_POST['password_traiteur']) ? $_POST['password_traiteur'] : '';
            $user = new Utilisateur(null,$nom,$prenom,$email,$pass,$type);
            $pass_conf = isset($_POST['conf_password_traiteur']) ? $_POST['conf_password_traiteur'] : '';
            //on charge le model
            $model = $this->loadModel('utilisateurManager');
            $model_service = $this->loadModel('ServiceManager');
            //
            $adresse = isset($_POST['adresse_traiteur']) ? $_POST['adresse_traiteur'] : '';
            $ville = isset($_POST['ville_traiteur']) ? $_POST['ville_traiteur'] :'';
            $pays = isset($_POST['pays_traiteur']) ? $_POST['pays_traiteur'] : '';
            $code_postal = @$_POST['code_postal_traiteur'];
            $addr = new Adresse(null,$code_postal,$ville,$pays,$adresse,null);
            if($pass!=$pass_conf){
                $reponse['motdepasse'] = true;
                return $reponse;
            }
            $reponse = $model->inscrireTraiteur($user,$traiteur,$addr);
            if(empty($reponse)){
                $_SESSION['inscris'] = true;
                $model_service->addOptionTraiteur($model_service->getId($user->getEmail()));
                $this->redirect(SITE);

            } else {
                return $reponse;
            }

        } else {
            $this->renderErreur404();
        }
    }

    public function inscrireHotelier(){
		if(isset($_POST['compte_hotel']) && $this->request->action!=__FUNCTION__){
			$hotel = new Hotel($_POST);
			$nom = isset($_POST['nom_referent_hotel']) ? $_POST['nom_referent_hotel'] : '';
			$prenom = isset($_POST['prenom_referent_hotel']) ? $_POST['prenom_referent_hotel'] : '';
		 	$type = HOTEL;
		 	$email = isset($_POST['email_hotel']) ? $_POST['email_hotel'] : '';
		 	$pass = isset($_POST['password_hotel']) ? $_POST['password_hotel'] : '';
		 	$user = new Utilisateur(null,$nom,$prenom,$email,$pass,$type);
			$pass_conf = isset($_POST['conf_password_hotel']) ? $_POST['conf_password_hotel'] : '';
			//on charge le model 
		 	$model = $this->loadModel('UtilisateurManager');
			$model_service = $this->loadModel('ServiceManager');
			
			$adresse = isset($_POST['adresse_hotel']) ? $_POST['adresse_hotel'] : '';
		 	$ville = isset($_POST['ville_hotel']) ? $_POST['ville_hotel'] : '';
		 	$pays = isset($_POST['pays_hotel']) ? $_POST['pays_hotel'] : '';
		 	$code_postal = isset($_POST['code_postal_hotel']) ? $_POST['code_postal_hotel'] : '';
		 	$addr = new Adresse(null,$code_postal,$ville,$pays,$adresse,null);
			
			$reponse = $model->inscrireHotelier($user,$hotel,$addr);
			if($pass!=$pass_conf){
				$reponse['motdepasse'] = true;
				return $reponse;	
			}
			
			if(empty($reponse)){
				//on ajoute les options dans la base de donnee pour l hotel
				$model_service->addOptionHotel($model_service->getId($user->getEmail()));
				$_SESSION['inscris'] = true;
				$this->redirect(SITE);
				
 	
				} else {
			 	return $reponse;
		 	}
				
		} else {
			$this->renderErreur404();	
		}
	}
	
	public function inscrireFournisseur(){
		if(isset($_POST['creerCompte']) && $this->request->action!=__FUNCTION__){
			$erreurs = array();
			//on charge les models
			$model_user = $this->loadModel('UtilisateurManager');
			$type = FOURNISSEUR;
			$nom_referent = isset($_POST['nom_referent_fou']) ? $_POST['nom_referent_fou'] : "";
			$prenom_referent = isset($_POST['prenom_referent_fou']) ? $_POST['prenom_referent_fou'] : "";
			$fonction_referent = isset($_POST['fonction_referent_fou']) ? $_POST['fonction_referent_fou'] : "";
			$email_compte = isset($_POST['email_fou']) ? $_POST['email_fou'] : "";
			$pass1 = isset($_POST['password_fou']) ? $_POST['password_fou'] : "";
			$pass2 = isset($_POST['conf_password_fou']) ? $_POST['conf_password_fou'] : "";
			$type_fournisseur =  isset($_POST['type']) ? $_POST['type'] : "";
			$code_postal = isset($_POST['code_postal_fou']) ? $_POST['code_postal_fou'] : "";
			$ville = isset($_POST['ville_fou']) ? $_POST['ville_fou'] : "";
			$pays = isset($_POST['pays_fou']) ? $_POST['pays_fou'] : "";
			$adresse = isset($_POST['adresse_fou']) ? $_POST['adresse_fou'] : "";
			$adresse = new Adresse(null,$code_postal,$ville,$pays,$adresse,null);
			if(strlen($code_postal)==5 && is_numeric($code_postal) && strlen($ville)>=2 
			&& strlen($pays)>=2){
				
			if($type_fournisseur=="Particulier"){
				$details = isset($_POST['details_fournisseur']) ? $_POST['details_fournisseur'] : "";
				$nom_activite = isset($_POST['activite_particulier']) ? $_POST['activite_particulier'] : "";
				$telephone = isset($_POST['telephone_particulier']) ? $_POST['telephone_particulier'] : "";
				$site = isset($_POST['site_particulier']) ? $_POST['site_particulier'] : "";
				$type = FOURNISSEUR;
				if($nom_referent!="" && $prenom_referent !=""){
					//on verifie la validité du numero et de l'adresse email fourni
					if($model_user->mailValide($email_compte) && $model_user->telValide($telephone) 
						&& $this->VerifTel($telephone)){
							if($pass1==$pass2 && $pass1!="" && strlen($pass1)>=6){
								$user = new Utilisateur(null,$nom_referent,$prenom_referent,$email_compte,$pass1,$type);
								$erreurs = $model_user->inscrireFournisseur($user,$type_fournisseur,
								$nom_activite,null,null,null,$telephone,$email_compte,$site,$details,$adresse);
								if(empty($erreurs)){
									$_SESSION['inscris'] = true;
									$this->redirect(SITE);
								}
								
							} else {
								$erreurs['erreur'] = "Les deux mots de passe doivent être identique et contenir au moins 6 charactère.";
							}
					} else if(!$model_user->mailValide($email_compte)){
						$erreurs['erreur'] = 'Cette adresse email existe pour un autre utilisateur.';
					} else {
						if(!$this->VerifTel($telephone))
							$erreurs['erreur'] = 'Numéro de téléphone non valide.';
						else
							$erreurs['erreur'] = 'Cet numéro de téléphone existe pour un autre utilisateur.';
					}
					
				} else {
					$erreurs['erreur'] = 'Veuillez saisir des informations valide sur le référent.';
				}
				
			} else if($type_fournisseur=="Entreprise") {
				$nom_entreprise = isset($_POST['nom_entreprise']) ? $_POST['nom_entreprise'] : "";
				$nom_activite = isset($_POST['activite_entreprise']) ? $_POST['activite_entreprise'] : "";
				$telephone = isset($_POST['telephone_entreprise']) ? $_POST['telephone_entreprise'] : "";
				$site_entreprise = isset($_POST['site_entreprise']) ? $_POST['site_entreprise'] : "";
				$details = isset($_POST['details_entreprise']) ? $_POST['details_entreprise'] : "";
				$form_juri = isset($_POST['forme_juridique']) ? $_POST['forme_juridique'] : "";
				$siret = isset($_POST['siret']) ? $_POST['siret'] : "";
				$email_entreprise = isset($_POST['email_entreprise']) ? $_POST['email_entreprise'] : "";
				//on verifie la validite du telephone et l'email
				if($model_user->mailValide($email_compte) && $model_user->telValide($telephone)
					&& $this->VerifTel($telephone)){
						if($email_entreprise !="" && $model_user->mailValide($email_entreprise) || $email_entreprise 
						=="" ){
								if($pass1==$pass2 && $pass1!="" && strlen($pass1)>=6){
									$user = new Utilisateur(null,$nom_referent,$prenom_referent,$email_compte,$pass1,
									$type);
									$erreurs = $model_user->inscrireFournisseur($user,$type_fournisseur,
									$nom_activite,$nom_entreprise,$form_juri,$siret,$telephone,$email_entreprise,
									$site_entreprise,$details,$adresse);
									if(empty($erreurs)){
										$_SESSION['inscris'] = true;
										$this->redirect(SITE);
										
									}
								} else {
									$erreurs['erreur'] = "Les deux mots de passe doivent être identique et contenir au moins 6 charactère.";
								}
								
						} else {
							$erreurs['erreur'] = 'L\'adresse email de votre entreprise existe pour un autre utilisateur.';
						}
						
				} else if(!$model_user->mailValide($email_compte)){
						$erreurs['erreur'] = 'Cette adresse email existe pour un autre utilisateur.';
					} else {
						if(!$this->VerifTel($telephone))
							$erreurs['erreur'] = 'Numéro de téléphone non valide.';
						else
							$erreurs['erreur'] = 'Cet numero de téléphone existe pour un autre utilisateur.';
					}				
				
			} else {
				$erreurs['erreur'] = 'Type de fournisseur non valide, veuillez récommencer.';	
			}
			} else {
				$erreurs['erreur'] = 'Votre adresse est incorrecte.';
			}
			return $erreurs;
		} else {
			$this->renderErreur404();
		}
	}

    public function detailsHotel(){
        if(count($this->request->params)!=1){
            $this->renderErreur404();
        }
        $model = $this->loadModel('utilisateurManager');
        $hotel = $model->getHotelById(intval($this->request->params[0]));

        if(! $hotel){
            $this->renderErreur404();
        }
        $this->set('hotel',$hotel);
    }

    public function detailsRestaurant(){
        if(count($this->request->params)!=1){
            $this->renderErreur404();
        }
        $model = $this->loadModel('utilisateurManager');
        $resto = $model->getRestoById(intval($this->request->params[0]));
        if(! $resto){
            /*$this->renderErreur404();*/
        }
        $this->set('resto',$resto);
    }

    public function detailsTraiteur(){
        if(count($this->request->params)!=1){
            $this->renderErreur404();
        }
        $model = $this->loadModel('utilisateurManager');
        $traiteur = $model->getTraiteurById(intval($this->request->params[0]));
        if(! $traiteur){
            /*$this->renderErreur404();*/
        }
        $this->set('traiteur',$traiteur);
    }
    public function detailsFournisseur(){
        if(count($this->request->params)!=1){
            $this->renderErreur404();
        }
        $model = $this->loadModel('utilisateurManager');
        $fourni = $model->getFournisseurById(intval($this->request->params[0]));

        if(! $fourni){
            $this->renderErreur404();
        }
        $this->set('fourni',$fourni);
    }

    public function rechercher(){
        if(isset($_POST['envoyer'])){
            $model = $this->loadModel('utilisateurManager');
            $prof = isset($_POST['professionnel'])? $_POST['professionnel'] : '';
            $name = isset($_POST['nom']) ? $_POST['nom'] : '';
            $ville_codepostal = isset($_POST['ville_codepostal']) ? $_POST['ville_codepostal'] : '';
            if($prof==='Fournisseur'){
                $fourni = $model->rechercheFournisseur($name,$ville_codepostal);
                $this->set('fournis',$fourni);
            } else if($prof==='Hôtel'){
                $hotel = $model->rechercheHotel($name,$ville_codepostal);
                $this->set('hotels',$hotel);
            } else if($prof==='Restaurant'){
                $resto = $model->rechercheResto($name,$ville_codepostal);
                $this->set('restos',$resto);
            }

        }
    }

    public function sendMessagesAdmin(){
        if(isset($_POST['envoyerMessages']) && ($this->request->action!=__FUNCTION__)){
            $model = $this->loadModel('messagesManager');
            $messages =
                "Nom société : " . htmlentities($_POST['champ1'])."\n"
                . "Type d'activité : " . htmlentities($_POST['champ5'])."\n"
                . "Type de service : " .htmlentities($_POST['champ2'])."\n"
                . "Ville : " .htmlentities($_POST['champ3'])."\n"
                . "Numéro de téléphone : " . htmlentities($_POST['champ4'])."\n"
                . "Adresse e-mail : " . htmlentities($_POST['zone_email1']). "\n"
                . "Recontacter par " . htmlentities($_POST['bouton1']). "\n"
                . "Informations complémentaires : " . htmlentities($_POST['zone_texte1']);

            $sujet = 'Inscription';
            $id_destinateur	 = '999';
            $id_expediteur = '0';
            return $model->sendMessages($id_expediteur,$id_destinateur,$sujet,$messages);
        } else if($this->request->action==__FUNCTION__){
            $this->render('/404.php');
        }

    }
}